#include "stdio.h"
#include "string.h"

void main()
{
	int n,a,b,c,i,j,l,num;
	long int tt[10001];
	int min,tot,flag;
	long int coin[600][3],rest;     /* 1 for value ; 2 for weight */


	scanf("%d",&num);
	for (l=1;l<=num;l++)
	{
		scanf("%d%d",&a,&tot);
		tot-=a;
		scanf("%d",&n);
		for (i=1;i<=n;i++)
		{
			scanf("%ld%ld",&coin[i][1],&coin[i][2]);
		}
		tt[0]=0;
		memset(tt,0,sizeof(tt));

		for (i=1;i<=tot;i++)
		{
			flag=-1;
			rest=500000;
			for (j=1;j<=n;j++)
			{
				if  (( i-coin[j][2] >= 0)&&( tt[i-coin[j][2]]!=-1 ))
				{
					flag=1;
					if (rest>(tt[i-coin[j][2]]+coin[j][1]))
						rest=tt[i-coin[j][2]]+coin[j][1];
				}
			}
			if (flag==1) tt[i]=rest;
			else tt[i]=-1;

		}


		if (tt[tot]!=-1)
			printf("The minimum amount of money in the piggy-bank is %ld.\n",tt[tot]);
		else
			printf("This is impossible.\n");
	}
}

/*
problem name:Piggy-Bank  
	Central Europe 1999
use time : 1 hour
ac rate :1/1 (100%)
type  :动态规划
	以重量为状态量.
	tt[n] 下标表示重量,tt[n]的值表示该重量对应的最小价值. -1为无对应.
问题描述:从指定几种coin中选出N个凑成指定的重量,并且价值和最小.

problem: 代码效率低,用了0.92秒,差一点超时.
	
finish data time : 2004/9/7/ 21:49

*/
